#ifndef ICD_DECL_IMPL_H_
#define ICD_DECL_IMPL_H_
#define DECL_POD_ICD(TYPE, QUAL) \
ctl_res_void TYPE##_ctor(TYPE* data); \
ctl_res_void TYPE##_copy(TYPE* dst, const TYPE* src); \
ctl_res_void TYPE##_dtor(TYPE* data);

#define IMPL_QUAL_POD_ICD(TYPE, QUAL) \
QUAL ctl_res_void TYPE##_ctor(TYPE* data) { \
  ctl_res_void res = {0}; \
  res.ec = EOK; \
  return res; \
} \
QUAL ctl_res_void TYPE##_copy(TYPE* dst, const TYPE* src) { \
  ctl_res_void res = {0}; \
  res.ec = EOK; \
  *dst = *src; \
  return res; \
} \
QUAL ctl_res_void TYPE##_dtor(TYPE* data) { \
  ctl_res_void res = {0}; \
  res.ec = EOK; \
  return  res; \
}
#define IMPL_POD_ICD(TYPE) IMPL_QUAL_POD_ICD(TYPE, )
#define IMPL_STATIC_POD_ICD(TYPE) IMPL_QUAL_POD_ICD(TYPE, static)
#define IMPL_INLINE_STATIC_POD_ICD(TYPE) IMPL_QUAL_POD_ICD(TYPE, inline static)
#endif